prev = tmp;
}
/* here, tmp got advanced past all lower stacked siblings */
- tmp = g_slist_prepend (tmp, window);
+ tmp = g_slist_prepend (tmp, g_object_ref (window));
if (prev)
prev->next = tmp;
else
*/
if (has_ancestor_in_list && gdk_window_is_ancestor (tmp->data, window))
{
- tmp = g_slist_prepend (tmp, window);
+ tmp = g_slist_prepend (tmp, g_object_ref (window));
if (prev)
prev->next = tmp;
*/
if (! tmp->next && has_ancestor_in_list)
{
- tmp = g_slist_append (tmp, window);
+ tmp = g_slist_append (tmp, g_object_ref (window));
return;
}
* hierarchy than what is already in the list) or the list is
* empty, prepend
*/
- update_windows = g_slist_prepend (update_windows, window);
+ update_windows = g_slist_prepend (update_windows, g_object_ref (window));
}
static void
gdk_window_remove_update_window (GdkWindow *window)
{
- update_windows = g_slist_remove (update_windows, window);
+ GSList *link;
+
+ link = g_slist_find (update_windows, window);
+ if (link != NULL)
+ {
+ update_windows = g_slist_delete_link (update_windows, link);
+ g_object_unref (window);
+ }
}
static gboolean
before_process_all_updates ();
- g_slist_foreach (old_update_windows, (GFunc)g_object_ref, NULL);
-
while (tmp_list)
{
GdkWindow *window = tmp_list->data;